#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QListWidget>
#include <unordered_map>
#include "durationslider.h"
#include "FFplayerQt.h"
using namespace std;

class MainWidget : public QWidget
{
    Q_OBJECT
private:
    /* 音乐媒体信息结构体 */
    struct MusicInfo {
        QString fileName;   /* 用于保存歌曲文件名 */
        QString filePath;   /* 用于保存歌曲文件路径 */
    };

public:
    MainWidget(QWidget *parent = nullptr);
    ~MainWidget();

private:
    /**
     * @brief 初始化UI
     */
    void initUI();
    /**
     * @brief 扫描歌曲
     */
    void scanSongs();
    /**
     * @brief 连接信号槽
     */
    void ConnectSignalSlots();

public slots:
    /**
     * @brief 响应播放器事件
     */
    void onPlayerEvent(FFplayerQt::PlayerEvent type);

private slots:
    /* 列表单击 */
    void on_musicList_itemClicked(QListWidgetItem* item);
    /* 下一曲 */
    void on_nextBtn_clicked();
    /* 上一曲 */
    void on_perBtn_clicked();

private:
    DurationSlider* durationslider; //歌曲进度条
    QPushButton* musicBtn[5];       //音乐相关按钮（上一曲,播放/暂停,下一曲,模式,音量）
    QListWidget* musicList;         //音乐列表
    FFplayerQt playerQt;            //播放器

    unordered_map<int, MusicInfo> musicInfo; // 列表媒体信息
};
#endif // MAINWIDGET_H
